function creatNew(fn, ...args) {
    // 创建空对象
    let obj = {};
    // 获取Fn构造函数
	// 这里由于argumens虽然是类数组类型，但并没有数组中的方法，因此使用call将数组的shift()方法绑定给arguments
	// 这里constructor为Fn，arguments为...args,即需传入构造函数中的参数。
    let constructor = Array.prototype.shift.call(arguments);
    let result = null;
    // 判断构造函数的函数类型
    if (typeof constructor !== 'function') {
        console.log('type erroe');
        return;
    };
    // 原型链链接
    obj = obj.create(constructor.prototype);
    // 绑定this，执行构造函数，接收构造函数返回值
    result = constructor.apply(obj, args);
    // 若result为引用类型，返回；否则返回newObj;
    return result instanceof Object ? result : obj;
}